不确定为什么我得到的索引超出了OpenCV的尺寸错误轴的范围

时间:2019-06-29 22:17:12

标签: python opencv indexing error-handling index-error

我正在openCV内进行一些图像处理,并且得到索引为“有尺寸错误的轴超出范围”。

我尝试添加

if(i+1 < len(img2) and j+1 < len(img2[0])):

确保我们在数组内,但只是跳过了我相信的数组中的每个元素。

我尝试删除0并将其设为

for i in range(imgCol):

样式循环。

我也试图减少数组的长度

for i in range(imgCol-1):

,但错误仍然存​​在。

这是我当前的代码。

img2 = cv2.imread('v2.jpg')

imgRow = img2.shape[0]
imgCol = img2.shape[1]

for i in range(0,imgCol):
    for j in range(0,imgRow):
        if ( img2[i,j,0] == 11 and img2[i,j,1] == 2 and img2[i,j,2] == 12):
            '''do something'''


2 个答案:

答案 0 :(得分:0)

我相信错误在这一行:

if ( img2[i,j,0] == 11 and img2[i,j,1] == 2 and img2[i,j,2] == 12):

我认为您正在尝试遍历每个像素,如果它的值为(11, 2, 12),请执行一些操作。图像是3维数组,您可以尝试使用img2[i, j, 0]来代替使用img[i][j][0]访问值。


编辑以汇总评论:

  • 您可能将rowcol颠倒了。
  • 解决问题的另一种方法是添加读取标记cv2.IMREAD_COLOR,以强制OpenCV读取BGR格式的图像,尽管这是默认设置。

答案 1 :(得分:0)

当我像这样运行它(如UdonN00dle建议)将行和列反转时,我没有收到任何错误。我不确定您的形状问题,因为我没有您的图片

class Result extends Component {
  state = { data: [], filteredData: [], value: "" };

  async componentDidMount() {
    await fetch("http://tenjoucesar.github.io/data.json", { mode: "cors" })
      .then(response => response.json())
      .then(data => {
        this.setState({ data });
        console.log(this.state.data); //state
      });
  }

  handleSubmit(e) {
    const { value, data } = this.state;
    e.preventDefault();
    let email = value;
    const filtered = data.filter(e => e.email === email); //filtering by email
    this.setState({ filteredData: filtered });
  }

  handleChange(e) {
    this.setState({ value: e.target.value });
  }

  InfomData = person => {
    return (
      <div className="result" key={person.email}>
        <img src={iconPerson} className="result__logo" alt="person" />
        <h3 className="heading-tertiary">
          {person.name}, &nbsp;{person.age}
        </h3>
        <p className="paragraph--result">{person.notes}</p>
        <div className="result__inner">
          <h4 className="heading-quaternary">Address</h4>
          <p className="paragraph--result">{person.address}</p>

          <h4 className="heading-quaternary">Email</h4>
          <p className="paragraph--result">{person.email}</p>

          <h4 className="heading-quaternary">Phone Numbers</h4>
          <ul className="numbers">
            {person.phoneNumbers.map(number => (
              <li className="numbers__items">{number.phone}</li>
            ))}
          </ul>

          <h4 className="heading-quaternary">Relatives</h4>
          {person.relatives.map(relative => (
            <p className="paragraph--relatives">{relative.name}</p>
          ))}
          <p />
        </div>
      </div>
    );
  };