OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 539|回复: 4

waitKey好像不读取按键的样子

[复制链接]
发表于 2019-5-9 18:41:16 | 显示全部楼层 |阅读模式
本帖最后由 Rayne 于 2019-5-9 18:48 编辑

入门opencv,想做一个wsad四个按键调节对比度的程序,但图像显示后无法读取按键的样子,图像不变化,求各位大佬帮助一下,已经验证switch里面的句子没问题,可以实现功能,我想实现当执行到switch时一直等待用户按下按键然后执行操作,但就是没反应。

                switch (waitKey(0))
                {
                case 'w':alpha = alpha + 0.1f; break;
                case 's':alpha = alpha -0.1f; break;
                case 'd':beta = beta + 5; break;
                case 'a':beta = beta - 5; break;
                default:break;
                }



回复

使用道具 举报

发表于 2019-5-9 19:00:17 | 显示全部楼层
switch (waitKey(0)) => switch (waitKey(0) & 0xFF)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 10:01:19 | 显示全部楼层
Shiqi Yu 发表于 2019-5-9 19:00
switch (waitKey(0)) => switch (waitKey(0) & 0xFF)

您好,依然没有作用,一下附上源文件
#include<opencv2/opencv.hpp>
#include<iostream>
#include "main.h"

using namespace cv;
int main(int argc, char** argv) {
        String srcAdress = "C:/Users/Rayne/Desktop/Opencv/girl.jpg";
        Mat src,dst;
        src= imread(srcAdress);

        //dst = Mat::zeros(src.size(), src.type());
        dst.create(src.size(), src.type());

        //std::cout << src.size() << src.type();
       
        if (src.empty()) {
                std::cout << "Cannot load image: "<<srcAdress;
                return -1;
        }
    float alpha = 1.4f;
        float beta = 30;
        int row = src.rows;
        int col = src.cols;
        char t;

        while(1)
        {
                for (int i = 0; i < row; i++)
                {
                        for (int j = 0; j < col; j++)
                        {
                                for (int k = 0; k < src.channels(); k++)
                                {
                                        dst.at<Vec3b>(i, j)[k] = saturate_cast<uchar>(src.at<Vec3b>(i, j)[k] * alpha + beta);
                                }
                        }
                }
                std::cout << "Please adapt\n";
        /*        namedWindow("Initial image", CV_WINDOW_AUTOSIZE);
                imshow("Initial image", src);*/
                namedWindow("Fixed image", CV_WINDOW_AUTOSIZE);
                imshow("Fixed image", dst);
                switch (waitKey(0) & 0xFF)
                {
                case 'w':alpha = alpha + 0.1f; break;
                case 's':alpha = alpha -0.1f; break;
                case 'd':beta = beta + 5; break;
                case 'a':beta = beta - 5; break;
                default:break;
                }
               
        }
        return 0;
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 10:10:48 | 显示全部楼层
Shiqi Yu 发表于 2019-5-9 19:00
switch (waitKey(0)) => switch (waitKey(0) & 0xFF)

您好,谢谢,已找到问题,运行时输入必须聚焦所开的窗口
回复 支持 反对

使用道具 举报

发表于 2019-5-12 13:20:07 | 显示全部楼层
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-8-26 03:43 , Processed in 0.046934 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表